import org.newdawn.slick.Graphics;

/**
 * Interface for different application states
 *
 * @author dbos
 * @version 2008-04-18
 */

public interface ApplicationState
{
    /**
     * Update state according to user action
     *
     * @param  action    String representing an action
     */
    void doInputAction(String action);

    /**
     * Update state according to user action
     *
     * @param  action    String representing an action
     */
    void render(Graphics g);

	/**
	* Updates the MenuState.
	*
	* @param delta The time passed since the last call to update.
	*/
	void update(int delta);

	/**
	* Sets a mode for the state.
	*
	* @param parameter the mode to set.
	*/
	void setMode(Object parameter);

	/**
	* Informs the state that the mouse has been moved.
	*
	* @param oldx The old x coordinate.
	* @param oldy The old y coordinate.
	* @param newx The new x coordinate.
	* @param newy The new y coordinate.
	*/
	void mouseMoved(int oldx, int oldy, int newx, int newy);

	/**
	* Informs the state that a mouse button has been pressed.
	*
	* @param button The old mouse button pressed.
	* @param y The y coordinate.
	* @param x The x oordinate.
	*/
	void mousePressed(int button, int x, int y);

}